In virtual machine (“VM”) technology, a user can create and run multiple operating environments on a computing device at the same time. Each operating environment, or virtual machine, requires its own operating system (OS) and can run software applications independently from the other virtual machines. Virtual machine technology provides many benefits as it can lower information technology (IT) costs through increased efficiency, flexibility and responsiveness. Each virtual machine acts as a separate environment that reduces risks and allows developers to quickly recreate different OS configurations or compare versions of applications designed for different OSs.
At the same time, when one or multiple virtual machines are running on a single computing device or server, each virtual machine will use a portion of the physical memory of the host. In this configuration, a type 2 hypervisor (i.e., a so called “hosted hypervisor”) is a computer software that is installed in the existing operating system (i.e., the “host OS”) and shares the available host physical memory with the host OS and other applications. Each virtual machine is typically configured to utilize a certain amount of the host physical memory that is available to the guest OS as the virtual RAM
Under conventional designs, once the guest OS is started, the amount of physical memory assigned to each guest OS is allocated from a host OS memory pool and locked from the host OS memory management system. Thus, the locked memory cannot be used by the host OS while the guest OS is running. However, for current systems, a misconfiguration of the amount of the physical memory assigned to one or more of the virtual machines may result in either host OS or guest OS memory starvation and inefficient utilization of hardware resources.
Accordingly, a system and method is needed for efficiently allocating physical memory to each virtual machine launched and running on a host machine.